package com.charonmc.utils;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;


/**
 * MD5Utils负责MD5加密
 * @author ChuYang
 */

public class Md5Utils {
    /**
     * 32位MD5加密
     * @param str 要加密的字符串
     * @return 加密后的字符串
     */
    public static String code(String str) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(str.getBytes());
            byte[] byteDigest = md.digest();
            int i;
            StringBuilder result = new StringBuilder();
            for (byte b : byteDigest) {
                i = b;
                if (i < 0) {
                    i += 256;
                }
                if (i < 16) {
                    result.append("0");
                }
                result.append(Integer.toHexString(i));
            }
            return result.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
    }

    /**
     * 获取服务器规定的MD5加密结果
     * @param str 需加密的字符串
     * @param player 玩家（标识符）
     * @return 加密值
     */
    public static String getMd5(String str, Player player){
        str += "%C|H|A|R|O|N|M|C%" + str + "SALT" + player.getName() + "W$R$I$T$E$B$Y$E$R$I$C$K$R$E$N";
        return Md5Utils.code(str);
    }
}